草庐IT

c++ - 特化 std::make_shared

全部标签

c++ - 未解析的外部符号 “std::basic_string”

我正在尝试通过VisualC++编译器使用Maven编译一个项目,但我不断收到关于std::basic_string类的链接错误。我确保将头文件包含到相应的c++文件中。我是漏掉了什么还是犯了一个愚蠢的错误???请让我知道哪里出错了。[ERROR]Parsor.obj:errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)public:int__thiscallstd::basic_string,classstd::allocator>::compare(classstd::basic_string,classstd::a

c++ - 如何获得基于 c 函数的差异?

我们的团队使用svn来管理我们的源代码。在对C文件执行重构时,我偶尔会更改函数并将它们移动到文件中。通常我会尽量避免移动函数,因为它会让默认的svndiff对正在发生的事情有点困惑,而且它通常会提供一个比它需要的更令人困惑的diff。尽管如此,我偶尔也会更改函数文件位置和函数内部代码。另一个出现这种情况的地方是分支合并,当文件有冲突时,一个或两个分支都有移动以及函数内更改。因此,我正在寻找的是一种语义感知差异工具,它可以告诉我两个级别的差异-功能安排和细节(功能内)。我尝试使用“-p”选项来比较差异(-x-p到svn差异),但这不是它的目的,它肯定没有做我想要的。我刚刚想到的另一个选择

c++ - 如何使用模块在 C 中编译应用程序?

我想做一个应用程序,它可以用外部模块编译,例如在php中。在php中你可以在运行时加载模块,或者将php与模块一起编译,这样模块就可以在运行时不加载。但我不明白如何做到这一点。如果我在module.c中有模块并且有一个函数,称为say_hello,如果你明白我的意思,我如何将它注册到主应用程序?/*module.c*/#include//hereregistersay_hellofunction,buthow,ifican'tinglobalscope//callanotherfunction?voidsay_hello(){printf("hello!");}如果我将所有文件(主应用

C++ getchar() 是否还有数据等待读取

我正在用c/c++实现一个关键阅读器程序。我正在使用Linux。我知道无缓冲的getchar函数将返回键的小数据值。对于所有ASCII键(a-z、A-Z、1-9、标点符号、回车、制表符和ESC),getchar()将返回一个值。对于其他键,例如方向键,会读取ESC键,但是当再次调用getchar()时,它会得到另一个值(A、B、C或D)。A=65B=66向上箭头=279165F5=27914953126ESC=27全表here有什么方法可以检查是否有更多字符要读取,或者是否只有一个字符?当读取一个键并且它的第一个值是ESC时,我不知道它是以ESC开头的功能键还是只是ESC键。#incl

c++ - Visual Studio 2012的任何免费C/C++重构工具/插件?

我看到了一些好的商业工具,比如:VisualAssistXCodeRushResharper(.NET)有什么免费的/开源的工具/插件可以做类似的工作吗? 最佳答案 微软的ProductivityPowerTools怎么样? 关于c++-VisualStudio2012的任何免费C/C++重构工具/插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/17314359/

c++ - 如何查询范围内的任何位是否在 C++ std::bitset 中设置?

我正在寻找一个C++bitset实现,它可以回答是否在一个范围内设置了一个位。std::bitset,vector,和boost::dynamic_bitset都可以访问我可以循环的各个位,但这不是查询位范围以询问是否设置了任何位的最有效方法-我什至不需要知道哪个。bitsetb;if(b.any(33,199)){//...}有图书馆提供这个吗?我想针对其他实现(包括我可能必须编写的实现)运行一些基准测试,但我找不到任何似乎实现此功能的基准。 最佳答案 不幸的是,在C++11bitset中,无法通过仅指定范围的边界来将位范围设置为

c++ - 如何使用函数 freopen_s

为了从文本文件中读取输入,我写了下面的代码:intmain(){intx;#ifndefONLINE_JUDGEfreopen("input.txt","r",stdin);#endifscanf("%d",&x);printf("%d\n",x);system("pause");return0;}效果还不错。但是,在visualstudio中,编译器由于freopen而给我一个错误,并建议我改用freopen_s。我试图了解函数freopen_s的工作原理,但我做不到。我的代码:intmain(){intx;#ifndefONLINE_JUDGEFILE*stream;freopen

c++ - 如何将 C 生成文件移植到 C++ 生成文件?

我有以下遗留makefile。如何更新此文件以改为编译C++?这是依赖部分:#Dependencyrules.PHONY:allcleanall:$(TARGET)_$(JENNIC_CHIP)$(BIN_SUFFIX).bin-include$(APPDEPS)%.d:rm-f$*.o%.o:%.S$(infoAssembling$它为微型编译一些C代码。 最佳答案 我认为您应该将CC从gcc更改为g++。 关于c++-如何将C生成文件移植到C++生成文件?,我们在StackOverf

c++ - 如何可移植地将 std::system_error 异常与 std::errc 值进行比较?

据我所知,以可移植的方式检查system_error条件的最佳实践之一是将它们的code()值与std::errc枚举。但是,当我尝试运行以下代码时,这似乎不起作用。#include#include#includeintmain(){try{throwstd::system_error(ENOENT,std::system_category());}catch(std::system_errorconst&e){assert(e.code()==std::errc::no_such_file_or_directory);//我是不是误解了这些诊断错误的工作原理,还是我做错了什么?如何将

C++ 成员模板特化语法

关于thissite有以下段落:Whendefiningamemberofanexplicitlyspecializedclasstemplateoutsidethebodyoftheclass,thesyntaxtemplateisnotused,exceptifit'samemberofanexplicitlyspecializedmemberclasstemplate,whichisspecializedasaclasstemplate,becauseotherwise,thesyntaxwouldrequiresuchdefinitiontobeginwithtemplater